package com.hy.admin.dao;

import com.hy.admin.entity.QuestionEntity;
import com.hy.admin.entity.MemberQuestionEntity;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface QuestionDao {
    int deleteByPrimaryKey(Long id);

    int insert(QuestionEntity record);

    int insertSelective(QuestionEntity record);

    QuestionEntity selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(QuestionEntity record);

    int updateByPrimaryKey(QuestionEntity record);

    /**
     * 查询用户提出的问题总数
     * @param memberId
     * @return
     */
    int selectCountByMemberId(Long memberId);

    /**
     * 查询教师被提问的问题总数
     * @param teacherId
     * @return
     */
    int selectCountByTeacherId(Long teacherId);

    /**
     * 查询用户提出的所有问题
     * @param memberId
     * @return
     */
    List<MemberQuestionEntity> selectByMemberId(@Param("memberId") Long memberId,
                                                @Param("relatedType") Integer relatedType,
                                                @Param("queState") Integer queState);

    /**
     * 查询向某教师提问的所有问题
     * @param teacherId
     * @return
     */
    List<MemberQuestionEntity> selectByTeacherId(@Param("teacherId") Long teacherId,
                                                 @Param("relatedType") Integer relatedType,
                                                 @Param("queState") Integer queState);


    /**
     * 查询所有向平台提问的问题
     * @return
     */
    List<MemberQuestionEntity> selectByPlatform();

    /**
     * 教师所有已回答公开问题
     * @param teacherId
     * @param isPublic
     * @param queState
     * @return
     */
    List<MemberQuestionEntity> selectByTeacherIdAndIsPublic(@Param("teacherId") Long teacherId,
                                                            @Param("relatedType") Integer relatedType,
                                                            @Param("isPublic") Integer isPublic,
                                                            @Param("queState") Integer queState);
    /**
     * 教师所有已回答平台问题
     * @param teacherId
     * @param isPublic
     * @param queState
     * @return
     */
    List<MemberQuestionEntity> selectByTeacherAnswered(@Param("teacherId") Long teacherId,
                                                            @Param("relatedType") Integer relatedType,
                                                            @Param("isPublic") Integer isPublic,
                                                            @Param("queState") Integer queState);
    /**
     * 查询所有精选问题
     * @param isChoice
     * @return
     */
    List<MemberQuestionEntity> selectByIsChoice(
            @Param("relatedType") Integer relatedType,@Param("isChoice") Integer isChoice);
    /**
     * 修改问题状态
     * @param id
     * @param queState
     * @return
     */
    int changeQueState(@Param("id") Long id, @Param("queState")int queState);

    /**
     * 根据uuid查询问题
     * @param uuid
     * @return
     */
    QuestionEntity selectByUuid(String uuid);

    /**
     * 修改精品课程设置
     * @param id
     * @param isChoice
     * @return
     */
    int updateChoice(@Param("id") Long id, @Param("isChoice")int isChoice);

    /**
     * 更新点赞数
     * @param id
     * @return
     */
    int updateLikeNum(Long id);

    /**
     * 更新答案查看数量
     * @param id
     * @return
     */
    int updateClickNum(Long id);
}